package com.winchain.chainbill.basic.charge.controller;

import com.shell.bee.base.annotation.Logging;
import com.shell.bee.base.utils.StringUtil;
import com.shell.bee.entity.mvc.RetMsg;
import com.shell.bee.mvc.controller.BaseController;
import com.shell.bee.persistence.model.PageLimit;
import com.winchain.chainbill.basic.charge.po.ValCom;
import com.winchain.chainbill.basic.charge.po.ValComRec;
import com.winchain.chainbill.basic.charge.service.ValComService;
import com.winchain.chainbill.basic.charge.vo.ValComVo;
import com.winchain.chainbill.basic.cus.po.CusGrp;
import com.winchain.chainbill.basic.cus.service.CusGrpService;
import java.util.List;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class ValComController extends BaseController {
	@Autowired
	private ValComService valComService;
	@Autowired
	private CusGrpService cusGrpService;

	@RequestMapping
	@Logging(module = "����������", methods = "��������������")
	public List<ValComVo> queryValComList(PageLimit limit, ValComVo valComVo) {
		return this.valComService.selectValComList(limit, valComVo);
	}

	@RequestMapping
	@Logging(module = "����������", methods = "����/����������")
	public RetMsg saveValCom(ValCom valCom, String cusIds, ValComRec valComRec) {
		if (("1".equals(valComRec.getPayBy())) && (!"1".equals(valCom.getValType()))) {
			return new RetMsg("error", true, "��������������������������������");
		}
		String str = "����";
		if (!StringUtil.emptyAndNull(valCom.getValId())) {
			str = "����";
		}
		if (this.valComService.saveOrUpdateValCom(valCom, cusIds, valComRec) > 0) {
			return new RetMsg("success", true, str + "����������");
		}
		return new RetMsg("error", true, str + "����������������������");
	}

	@RequestMapping
	@Logging(module = "����������", methods = "������������������������������")
	public List<CusGrp> getValComGroups() {
		return this.cusGrpService.selectGroupsByValCom();
	}

	@RequestMapping
	@Logging(module = "����������", methods = "��������")
	public RetMsg updateState(String valId, String valState) {
		ValCom vc = (ValCom) this.valComService.selectByKey(valId);
		if (vc.getValState().equals(valState)) {
			return new RetMsg("error", true, "������������������������������");
		}
		if (this.valComService.updateState(valId, valState) > 0) {
			return new RetMsg("success", true, "������������");
		}
		return new RetMsg("error", true, "����������������������");
	}

	@RequestMapping
	@Logging(module = "����������", methods = "������������������������")
	public String checkValCus(String valId, String cusIds, String grpId, String valBiz) {
		return this.valComService.checkValCus(valId, cusIds, grpId, valBiz);
	}
}
